home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 11
/
Cream of the Crop 11-2.iso
/
bbs
/
ls1_2.zip
/
LS.DOC
< prev
next >
Wrap
Text File
|
1996-01-03
|
114KB
|
2,320 lines
─ ─ ─ ──═───═──═─═══════════════════════════─═──═───═── ─ ─ ─
─ ─╦ ╦ ╦ ╦ ╔═╗ ─ ─║
─ ──║ ║ ║ ║ ── ──║
──║ ║ ╔═╦ ╠═╗ ═╬═ ╚═╗ ╔═╗ ╦═╗ ╦═╗ ╔═╣
── ─║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╠═╝ ╠═╝ ║ ║
─ ─╚══╝ ╩ ╚═╣ ╩ ╩ ╩ ╚═╝ ╠═╝ ╚═╝ ╚═╝ ╚═╩
─ ─║ ─ ─║
─ ──╚═╝ ─ ──╚
┬─┐ ┬─┐ ┌─┐
├─│ ├─│ └─┐
┴─┘ ┴─┘ └─┘
─ ─ ─ ──═───═──═─═══════════─═──═───═── ─ ─ ─
The future of BBS software
Version 1.2
Copyright (C) 1995 by RidgeLine Engineering. All Rights Reserved.
_________________________________________________________________________
[Contents]
Introduction
Part 1 - Getting Started
Setting up LightSpeed [See Readme.Doc]
1.1 Modifying the questionares
1.2 Modifying the menu screens
1.3 Modifying the menu system
Part 2 - The Mail System
2.1 What's so special
2.2 Simple tricks
2.3 The details
Part 3 - The File System
Part 4 - Installing doors
4.1 LightSpeed Companions
4.2 Other doors
Part 5 - Keys & Local commands
Part 6 - Glossary of Terms
Part 7 - Troubleshooting
Part 8 - Pricing and upgrade policy
8.1 Upgrades
8.2 Contacting us
8.3 What you're buying
Appendix A - Known bugs
Appendix B - Why?
Credits
Legal Notice
Copyright
Source Code
------------------------------------------------
[Introduction]
Thank you for trying this product. We hope you'll find it to be the best
system available. This is still an early version, and probably has many
bugs and faults in it still. To order your copy of LightSpeed, print out
and mail in REGISTER.FRM. For more information or assistance, contact our
BBS system or send us mail via internet (see: Part 8.2 - Contacting
us) You'll find the latest pricing and information on our BBS. And feel
free to test the system to see if you like it from a user's point of view.
Also, if you have any questions, feel free to write a comment to the sysop
(Terror) and he'll try his best to answer any questions you might have. He
is the lead programmer for LightSpeed and our other products.
What is LightSpeed? LightSpeed is a full-featured BBS System, a program
that can run on a single (or networked, although this feature is probably
not functional yet) computer(s) and answer phone calls from modems.
LightSpeed can handle incoming calls from thousands or even hundreds of
thousands of users. It provides the foundation for you to build a BBS
system to host in any number of activities and computer services.
Now a brief look at the features in the full system of LightSpeed:
-= Complete DOS-Based system capable of operating up to 999 lines
[Maximum nodes supported varies between editions, trial edition
only supports one line and one free local line]
-= Free "local node" allowing the local sysop access to the BBS system.
-= The most complete message system available. Featuring "auto-deletion"
which keeps even the most busy system's mail base filled only with
the messages you need. And excellent methods for turning any BBS
into an interesting and active message system.
-= The most configurable system available. Up to 1,000 message, file
areas, and security classes. And a totally flexible menuing system.
Keep all your BBS commands from one main menu, or any number of
sub-menus, totally up to you.
-= Fast: Capable of running multiple lines off a single computer.
[Requires a multi-tasker such as DesqView or Windows, or a network]
-= Powerful information system: Completely configurable questionares
allow you to choose the information you ask for, and manage the
information however you want.
-= Multiple operation modes: Use time limits, security classes, or
credits to keep track of your user's system usage.
-= Shut off selected parts of your system after a set amount of time,
for example: limit selected user's access to download capability.
-= Powerful door support (Doors are "add-ons" usually produced by
sources other than our company.) Doors made specifically for or
with help from LightSpeed have an extended link with the system that
allows them to act just like they are a part of LightSpeed itself.
[Doors are not available in the trial edition]
-= Enjoyable teleconference that lets users talk with other users,
the main attraction of many BBS systems. Features full action
commands, generic actions, whisper & page commands, and more!
-= Free accessories: LsVote, LsWall, LsChat, LsPlanets, and LsVerify
doors provide much entertainment that will make your BBS a hit
instantly. As well as the "Calls" utility program. [Not included
in the trial edition]
-= Cheap: The lowest priced BBS system available in today's market.
Currently starting at $ 40 for a single node (with free local node).
-= Chat modes: In addition to the nice teleconference, a simple but
professional sysop chat mode is provided to allow the system
operator (sysop) to talk with the current user.
-= Page system: Users can page each other from other parts of the
system, outside of teleconference. You can even communicate with
people using doors, in some cases.
-= Powerful terminal program: (Not available yet, no garuntee it ever
will be.) LightSpeed will have a companion terminal named LightTerm
or LTerm for short. Users operating from this terminal program will
have faster ANSI, "terminal module" support, and 320x200x256 color
graphics in place of ANSI (if your LightSpeed BBS is setup to offer
it) and much more. LTerm will be a shareware program.
-= Full RIP and ANSI support: RIP stands for [R]emote [I]maging
[P]rotocal, and provides a means of operating with the BBS in
a graphical environment. ANSI is the standard which allows for
color when operating with any BBS.
-= Baud rate adjustment: LightSpeed can treat users with different
baud rates differently, as you define. For example, users at
14400 (14.4k) baud can see a brilliant animation, however users
at 2400 baud would be bogged down by an animation's transfer time,
so LightSpeed can send 2400 baud users a still-screen instead.
-= User and security control: Along with the flexible menuing system
comes the ability to lock selected users and security classes
out of any command you choose. Or, allow only selected users into
a more private command. Password protect any commands you wish.
-= Built-in registery of users: Allows users to learn more about other
users. Gives information such as a person's hobbies and interests.
-= File ratios: Prevent users from downloading too much by forcing them
to upload a certain amount for what they want to download. You can
use bytes or files for this ratio (or both, or neither) and you can
vary it by-security (for example, paid users may be made exempt from
the ratio).
-= Built-in Cd-Rom support: Easily add cd-roms to your BBS system,
allowing you to add thousands of files to the system quickly and
relatively cheaply. LightSpeed has excellent catagorizing
capabilities, so that even a system with 50+ Cd's can let the user
find what they want quickly & easily.
-= Multiple file/mail systems: Divide your file & mail areas up as many
times as you like. For example, let users choose from Windows or
Dos files, and then choose from Games, Utilities, or Image files,
and finally let them choose from those file areas. Divide them up
once or a thousand times!
-= Full Door.Sys (52-line) and InfoLink.Dat support for doors.
Extremely easy to use door system, and very fast.
[Not available in trial edition]
-= Credit, time/day, file KB-Ratio, file count-ratio, KB/day ratio,
and count/day ratio, use any of them, or none at all. Giving you
extensive control over your user's activities, based on their
security class.
-= Comment to the Sysop menu: Expandable, predefine comments to any
user on your system. This can be very useful on larger systems,
for example you might want to allow users to comment to the main
sysop, or to a technical support staff. Create "mail-boxes" for
any users.
-= Adjustable behavior: LightSpeed can treat different terminals,
nodes, users, security classes, and baud rates in different ways,
as you define. LightSpeed can even act differently at random!
You could set your BBS up to use 10 different menu designs at
random.
-= Anti-Duplicate defense: LightSpeed includes several security
precautions to prevent users from creating more than one account
per person. LightSpeed also includes LsVerify, which you can use
to force users to give an accurate phone number.
And LightSpeed has a bright future ahead of it. Some of the things
we've considered, or even planned, in the future are:
- For larger systems, future plans involve adding internal multi-tasking
support, which makes it possible to operate as many as 200 different phone
lines (nodes) from a single computer with no loss of speed. For now, you
must use a multitasker such as Windows 95, DesqView, or Dv/X (Windows 3.1
may be possible, but is un-recommended.)
- C/C++ programmers will soon have the ability to write programs with
help from LightSpeed as easily as writting a program to run on your own
computer. Our add-ons, LsVote, LsWall, LsVerify, LsChat, and LSPlanets
provided with LightSpeed, and our Teleconference module, are all written
using this code. In the future, support for Pascal is expected.
- There are even plans being considered to allow a new 256 color remote
operation mode. That would allow fully digitized graphics for your
BBS. Your main menu could be a digitized image, or something you've drawn
with up to 256 different colors. We've tested this technology and found
it can operate often faster than regular ANSI in our system. And another
untested technology we've considered is graphical (256 color) animations
across the modem. While untested, we predict it may be possible to do
so with a frame rate of 10fps in a 120x100 window. There are no current
plans to implement animation technology, however, at least until faster
modems become common.
- We will be looking at adding Internet support through LightSpeed soon.
- LightSpeed will features a built-in BBS-to-BBS communicatations system
called "LaserLink" which lets LightSpeed systems share different data
such as messages or files, and even any doors written with LsDoor.
- We are currently looking at writting 2 additional versions, one with
internal multi-tasking, and one for Windows-based operation. The
Windows edition has never really been done before, but, IF DONE PROPERLY,
it is expected that it can surpass DOS operation in many aspects
including speed and simplicity.
If you downloaded this file off a BBS system, it is either the Trial
edition or illegal software (pirated). If you received this software on
a floppy disk, look at the disk's label to figure out which edition you
have. What is limited about the Trial Edition?
- Doors are totally disabled.
- Actual uploads and downloads are disabled. The file system operates
normally except for the actual file transfers, so you can still have a
look at it. (Currently, LightSpeed would require GSZ or DSZ companions
to help with the downloads & uploads, these can be found very easily on
local BBS systems)
- No teleconference is included. (Teleconference is normally run from a
door, this door is specially designed to work well with LightSpeed.)
- Questionare links (doors in questionares) are disabled.
- System events involving batch files are disabled. This also disables
LightSpeed's daily maintenance from being run automatically (you can
still run it manually using the program MAINT.EXE in your LightSpeed
directory). Daily maintenance is required to purge aged mail and user
accounts, and to purge unused data from the user & mail databases and
a few other tidy-up operations.
[Part 1 - Getting Started...]
For instructions on your initial setup of LightSpeed, see README.DOC.
Change to your LightSpeed directory and type: SHOW README.DOC[Enter] to
view it.
[1.1 - Modifying the questionare...]
A "questionare" is a text file which you can modifying which gives
LightSpeed questions it will later ask your users. The "answer" file
is a text file created by LightSpeed which holds the answers your users
give to your questions. The "new user questionare" is presented to users
when they create a new account on your system, and is needed to gather
some basic information such as the user's name, phone number, address,
terminal type, etc. You can also use questionares to gather specialized
information for a purpose other than creating an account. For example,
our BBS system uses a questionare called "Guest.Qst" which creates an
answer file called "Guest.Out". This questionare is presented to any
user who logs on to our system as "Guest". It gathers some quick
information, but is kept short so that users who are eager to try out
LightSpeed can do so without having to take too long answering boring
questions. Almost all LightSpeed systems need a new user and registery
questionare. Both have been provided with LightSpeed, however if you
wish to modify them to suit your needs, here's how:
You must use a text editor, such as MS-Dos EDIT, to modify the questionare
file. To start off with, you can edit the new user questionare included
with LightSpeed (You should keep a backup however, in case you make a
mistake.) The file is \Ls\Quest\New.Qst. When working with the included
file, you'll notice some odd looking @C symbols inside many of the
quotation marks, these are explained more later, and are used to control
the color of the text. In all LightSpeed text files, uppercase and
lowercase are ignored, except when in quotation marks (which usually is
something shown to the user exactly as it appears in the quotations.)
You can indent as much as you like (Leave spaces at the start of the line),
and it is recommended that you do so to make your file easier to read later.
Blank lines are always ignored, and lines beginning with a ; are ignored.
In questionares, lines that begin with a + are read to both the reader
and your answer file. Lines that begin with - are placed in the answers
but hidden from your users. Lines that begin with a | are read to the
user but not repeated in your answers. Blank lines are also ignored. To
ask a question, place an "Ask" statement in your questionare. The format
of an Ask statement is:
ASK type [FORCE] [store] [NEW] "Question?"
You may put whatever you like in place of "Question?" but the quotes must
be there. The keyword FORCE specifies that the user MUST give this
information to continue. They cannot press [ENTER] and leave it blank,
for example, in a forced question. The keyword NEW specifies that the
question take two lines, this is usually not very important. A question
without NEW might appear like so:
What is your real name? Micheal Smi_
Where a question with NEW might show up like:
What is your real name?
] Micheal Smi_
It is mostly a matter of personal taste, and sometimes you won't have
enough space to fit the entire answer on a single line.
'Type' can be any of the following, which tell LightSpeed what kind of
information you want:
ASK STRING... Gets any information.
ASK NUMBER... Asks for a number.
ASK CHARACTER... Asks for a single letter.
ASK SPECIAL... Asks for a formatted type (Explained later).
ASK Y/N... Asks a yes or no question.
ASK CHOICE... Asks a multiple choice question (Explained later).
You can also use MULTIPLE and OPTION in place of CHOICE.
An Ask Special statement uses a slightly different format:
ASK SPECIAL [FORCE] [store] [NEW] "Format" "Question?"
The "Format" is used by LightSpeed to force the user to answer in a
special way. This is usually used with phone numbers, dates, times,
and the like. Your format might be: "(###)###-####" for a phone number.
LightSpeed will display the "( ) - " parts as they reach them,
by itself. And for each # it encounters, it expects a number. You can
also use * characters to expect any letter, such as: "***" to expect 3
letters for an answer, or "***-***" to expect 3 letters, then LightSpeed
shows an - and finishes by expecting 3 more letters. You might use the
* character for a time: "##:## *m" and the user must enter 4 letters
followed by a single letter. An example special statement:
Ask Special Force New "##/##/##" "What is your birthdate?"
Which would show up something like:
What is your birthdate?
] 01/2_
Finally, the Ask Multiple statement allows your users to pick an option
from a list of choices. An example to start off with:
Ask Multiple "Where did you hear about this BBS from?"
{
'1' "From a magazine"
'2' "From a friend"
'3' "From an ad"
'4' "From a program we sold"
}
Which would show up to the user as:
Where did you hear about this BBS from?
[1]...From a magazine
[2]...From a friend
[3]...From an ad
[4]...From a program we sold
Selection? _
The curly brackets after the Ask Multiple statement show the start and
the end of the choices. You MUST have both a start and end bracket ON
THEIR OWN LINE as shown above, or LightSpeed will give you errors. Inside
the brackets, is the list of the choices the user will be presented with.
One option is given on each line. Each option has two parts to it, the KEY
and the TEXT. The key is what key the user will press to choose that
option. The text is what is shown to the user for the option. The key is
always surrounded by single quotes (') and is one character. The option is
always surrounded by double quotes (") and can use the full line if needed
(but only one line, the ending quote must be on the same line as the starting
quote.) You can have as many options as you want, but you must use a
seperate key for each option or your users won't be able to select between
them.
The other Ask types are fairly self-explainatory. Ask String asks the
user for a single line of any kind of information. Ask Number asks for
a single line of numeric information. Ask Character gets a single letter
from the user. Ask Y/N asks a yes or no question (it forces the user to
either press Y or N).
That's all there is to questionares, except the [store] part. However,
you should now be able to create informational questionares for purposes
such as getting a user's order for a product, or answering a poll.
The [store] part of the command tells LightSpeed that the answer the
user gives is to be used by LightSpeed for some purpose. For example:
Ask String Real "What is your real FULL name?"
The above instructs LightSpeed to save the answer in "Real", which is
short for "Real Name". Later, when you look in the sysop database (Where
you can review all the user's accounts) you'll see the user's real name
matches whatever they answered here. The options you can choose for
store are as follows (You can only use one of them in a single question):
[Note: Some storage types must be done in multiple-choice, and the
usual format is specified beneath them. You can change the TEXT in
such multiple-choices to whatever you like, but keep the KEYS the same.
You can safely leave out any options you wish from the multiple choices,
but it disables the user's ability to select it. This is usually okey,
but might not be a good idea when asking a user's sex.]
REAL ..Real name (Expects 2 words, checks for duplicates)
PASSWORD ..Password (Forces the user to re-enter to verify)
VPHONE ..Voice phone number (Checks for duplicates)
DPHONE ..Data phone number
FROM ..User's city & state
ZIP ..User's zipcode
BDAY ..User's birthdate (Use special format: "##/##/##")
SEX ..User's gender..
(Use multiple choice: in any order, as stated above)
'M' "Male"
'F' "Female"
'X' "Not disclosed" [Optional]
TERMINAL ..User's terminal type
(Use multiple choice: in any order, as stated above)
'N' "No-color"
'C' "Color"
'R' "Ripterm" (If you have it enabled)
'A' "Auto-detect" (AutoDetect when the user first connects)
LINES- ..Number of lines on a user's screen (Use ASK NUMBER)
LINES+ ..Same, but displays 50 numbers and when using this type,
ask what number is the first on their screen (or on the top)
PROTO ..User's default file transfer protocol (Use ASK CHARACTER)
EDITOR ..User's default mail editor
(Use multiple choice: in any order, as stated above)
'F' "Full-Screen (Requires ANSI)"
'L' "Line-Editor"
'S' "Select each time"
'A' "Autodetect" (Determines by the user's terminal setting)
COMMENT1 ..For your own use, might be a good place for user's address
COMMENT2 ..For your own use
...
COMMENT8 ..For your own use
REG.AGE ..Registery "age"
REG.PHONE ..Registery "voice phone number"
REG.FIRST ..Registery "first name"
REG.HOBBIES ..Registery "hobbies"
REG.SPORTS ..Registery "sports"
REG.BOARD ..Registery "bbs name" (Also see IF statement below)
REG.BBSNUM ..Registery "bbs number" (Also see IF statement below)
REG.LOOKS ..Registery "appearances"
REG.STYLE ..Registery "style"
REG.MOVIE ..Registery "Favorite movie"
REG.TVSHOW ..Registery "Favorite TV Show"
REG.MUSIC ..Registery "Favorite music"
REG.SUMMARY1 ..Line 1 of registery summary
REG.SUMMARY2 ..Line 2 of registery summary
There are also 10 variables you can use as you wish. These can hold
a NUMBER, CHARACTER, Y/N, or MULTIPLE CHOICE answer in them. You can later
make decisions based on these variables. They are used as I[x] as storage,
where x is 0 through 9 (Like I[2] or I[6]). For numbers, they hold the
number between 0 and 65,000, for characters, they hold the letter the user
pressed. For multiple choices, they hold the KEY the user pressed. For
example, in a registery questionare, you might want to ask if a user owns
his own BBS before asking what the name and number of it is. So, you start
by asking the yes or no question:
Ask Y/N I[1] "Do you operate a BBS? (Y/N) "
Then, you decide what to do next by an "IF" statement in your questionare.
The forms of an IF statement are:
IF [thought] = [thought]
IF [thought] == [thought]
IF [thought] >= [thought]
IF [thought] > [thought]
IF [thought] < [thought]
IF [thought] <= [thought]
IF [thought]
Both = and == mean the same thing. > means "greater than" and < means
"less than". >= means "greater than or equal to" and <= means "less than
or equal to". A single [thought] by itself performs the action if the
[thought] comes out to be anything other than 0, otherwise it "isn't true".
All "IF" statements must have a matching "ENDIF" statement, which is simply
ENDIF on its own line. For our example:
Ask Y/N I[1] "Do you operate a BBS? (Y/N) "
If I[1] == 'Y'
Ask String Reg.Board "What is the name of your BBS? "
Ask String Reg.Bbsnum "What is the number to your BBS? "
Endif
The indents are optional, but make it easier to read. [thought]s can be
any number, any letter (in single quotations), or any of the variables.
Some examples:
IF 'A' == 'B' ...This could never be true
IF 10 = 15 ...This could never be true
IF 5 ...This is always true
IF 0 ...This is never true
IF I[4] ...This is true if I[4] is not 0
IF I[2] == 15 ...This is true if I[2] is 15
Finally, there are some other less-important commands you can use in your
questionares.
The SHOW command displays a text file, which can be rip, ansi, or ascii.
If the user is in RIP mode, LightSpeed looks for the file with the extension
".RIP", in ANSI mode ".ANS", in ASCII mode ".ASC". Example:
SHOW INTRO.ish [MORE]
The .ish is replaced anyway and is ignored. You don't need a . on the
filename if you don't want, and the filename shouldn't be in quotations.
MORE can be specified if you want to force LightSpeed to display a prompt
before proceeding. If the file being displayed is longer than one screen
or contains the @PAUSE@ keyword, LightSpeed will display the prompt anyway.
If you find your screen scrolling away before you can see it, add MORE to
the command. You can also specify a PAUSE command in your questionare.
SHOW INTRO.JNK
PAUSE
The EXIT command can end your questionare. It CAN be used from within
an IF statement to end your questionare early. It is also not required,
because when the end of the questionare file is reached, it is assumed you
wanted to EXIT at that point. However, in the new user questionare, you
can also use the ABORT command to hang up the caller and end the questionare.
The SET command lets you modify a few settings, the three uses are:
SET SEC securityclass ..Changes a user's security class
SET EXPIRE numberofdays ..Sets the user's expiration date
to 'numberofdays' from now
SET CREDITS number ..Sets the user to have 'number' credits
There is also a very rarely used command which may expanded on in future
versions called COPY, however it only copies two items at this time:
COPY COMMENT1->REG.STYLE
COPY HANDLE->REAL
The first simply copies whatever is in the COMMENT1 field of the user's
account to the user's registery style field. The second copies
whatever the user used to login as into their "real name". A user's "real
name" must be filled with something so that doors can identify a user. With
this method, you can use only "real names" on your system or use only
"handles" on your system (Using JUST handles is un-recommended, LightSpeed
by default allows handles for all public operations, but it is advised that
you keep the user's real name on record.)
Last, except in the Trial version of LightSpeed which will ignore it, you
can use:
DOOR filename
To execute another program during the questionare. This is a fairly
simple command, although you should follow some guidelines to reduce any
errors. A) Always specify the path to your batch file as well as the batch
file name. B) Inside your batch file, always use .EXE, .COM, and .BAT after
filenames you are executing to avoid conflicts. Example:
DOOR "C:\Ls\LsVote.Bat"
You can also make use of a few keywords after your filename with the
DOOR command. The first is DoorSys, which specifies that LightSpeed should
ONLY create a door.sys dropfile. The second is InfoLink, which specifies
that LightSpeed should ONLY create an infolink.dat dropfile. The third is
Quick, which specifies that LightSpeed should not create any dropfiles.
Finally, you can add the Code or Codes keyword to add some environment
variables.
%Code1% = Code[1]
%Code2% = Code[2]
...
%Code5% = Code[5]
Some examples of the keywords you can use:
DOOR "C:\Ls\LsVote.Bat" InfoLink
DOOR "C:\Ls\Lord.Bat" DoorSys
DOOR "C:\Ls\DoThis.Bat" Quick
DOOR "C:\Ls\DoThat.Bat" Codes
DOOR "C:\Ls\DoThem.Bat" DoorSys Codes
Now, you'll want to know how you can make use of these questionares, which
brings us to the most powerful feature in LightSpeed, the menuing system.
[1.2 - Modifying the menu screens...]
Before you can change what the user can do with your system, you must
first know how to modify what your user sees. Most BBS Sysops find a
program named "TheDraw" very helpful for this. Future versions of
LightSpeed will have their own program for drawing ansi and ascii
screens, but for now, it is recommended that you get a copy of TheDraw
off a local BBS (it's quite common and should be easy to find).
LightSpeed always ignores a file's extension when it comes to display
files. For example, if it is told to display "MyFile.Duh" then its the
same as saying just "MyFile" as LightSpeed will first look for "MyFile.Rip"
(if rip is enabled), then "MyFile.Ans" (if ansi color is present), and
finally, it will try "MyFile.Asc" in all cases. There are also special
codes you can use in your display files. More of these will be added
later, but for now, they are:
@PAUSE@ ..Prompts the user with a prompt before continueing
@CLS@ ..Clears the user's screen (and the local screen if needed)
@HOME@ .."Homes" the cursor to the upper left corner of the screen
@NONSTOP@ ..Turns off automatic pause prompting at the end of every page
[This also disables the @PAUSE@ code]
@NOSTOP@ ..Turns off the ability to press [S]top at a prompt
@STOP@ ..Turns on the ability to press [S]top at a prompt
@USER@ ..Replaced with the user's alias
@REAL@ ..Replaced with the user's real name
@CREDITS@ ..Replaced with the number of credits the user has
@IFBAUD+xxxx@ ..Proceeds only if the user's baud rate is at or greater
than or equal to xxxx baud. Otherwise, everything up
until the @ENDIF@ code is skipped. Example:
@IFBAUD+2400@
@IFBAUD-xxxx@ ..Proceeds only if the user's baud rate is less than
or equal to xxxx baud. Example: @IFBAUD-14400@
@IFSEC=xxxx[,xxxx[,xxxx[...]]]@
@IFSEC!=xxxx[,xxxx[,xxxx[...]]@
..Proceeds only if the user has a security class
named xxxx. You can specify multiple security class
seperated with commas. If the != is specified,
proceeds only if the user DOES NOT have a security
class named xxxx.
@-@ ..Sends a "save cursor position" ansi code (if ansi is on)
@+@ ..Sends a "restore cursor position ansi code (if ansi is on)
@{x}@ ..Sets the background color to x, where x is any of the
codes below: (if ansi is enabled)
@x@ ..Sets the foreground color to x, where x is any of the
codes below: (if ansi is enabled)
Bright colors Dark colors Background colors
[Case matters] [Case matters] [Case is ignored]
@1@ Grey @o@ or @O@ (Letter O) Black @{O}@ Black
@B@ Blue @b@ Blue @{B}@ Blue
@G@ Green @g@ Green @{G}@ Green
@C@ Cyan @c@ Cyan @{C}@ Cyan
@R@ Red @r@ Red @{R}@ Red
@M@ Magenta @m@ Magenta @{M}@ Magenta
@Y@ Yellow @y@ Brown @{Y}@ Brown
@W@ White @w@ Dim White @{W}@ Grey
It is OK to use the @x@, @{x}@, @-@, and @+@ codes in an .ASC (Ascii,
usually non-color) file. And if you do so, an .ANS file isn't required at
all. If the user is in ansi mode, the .ANS file doesn't exist, and @x@ style
codes are found in the .ASC file, LightSpeed will use those to set the
coloring. If the user is in ascii mode, @x@ style codes are just ignored.
However, TheDraw does not make it easy to use the @x@ codes (when you change
the color in TheDraw, you are changing the ANSI color, NOT with @x@ codes)
therefore it is recommeded that you stick to creating a seperate .ANS and
.ASC file for your users. You can use the other @xxx@ codes like @CLS@ and
@PAUSE@ in any of your LightSpeed display files, .RIP, .ANS, and .ASC.
INSIDE of LightSpeed, when YOU or your users are using the system, you
can enter the @x@ color codes in places such as messages to other users
etc., but you do not attach the second @ to it. For example, what is @R@
for bright red in your display files is instead @R in a message to change
the color to bright red. And @{B}@ to change to a blue background would
become @{B} in a message. Also, inside LightSpeed, the code for black
becomes @{0} (with a zero) instead of @{O}@ (with an "oh" letter).
This confusion will hopefully be simplified in a later version.
Keep in mind, you don't normally need to use the @PAUSE@ codes. LightSpeed
automatically displays a pause prompt after every screenful in your display
file, the pause prompt looks like:
-=Pause=- [C]ontinue, [N]onstop, or [S]top?
The user hits ENTER or C to continue, and the pause prompt is erased if
possible. The user can press N to have the same effect as @NONSTOP@, and
pause prompts will not be displayed until the display file ends or until
a @STOP@ code is reached (The @NONSTOP@ code and [N]onstop mode are
interchangable.) Nonstop is usually selected by a user who wants to capture
something with their terminal program.
Also, in a few LightSpeed display files, you may notice @.xx@ codes,
with a number from 0 to 49 in place of the xx, such as @.21@ which are used
to tell LightSpeed it needs to display some information at this point.
The exact information is different for each display file that uses these
special codes, so if you see them, make sure the @.xx@ is not modified (it
is safe to relocate it, and change the rest of the display file, but make
sure the @.xx@ codes themselves are not removed or changed, or the
information tied to it will not be shown.) An example of this is the
"Statistics" display file. There is one place where you may want to add
@.xx@ codes of your own: Menu display files. Explained more later,
"codes[]" are a group of numbers you can modify for your own use, and if
you want to display them in a menu, use the first ten @.xx@ codes. This is
very rare and not normally needed.
Finally, the actual display files you will work with are in three different
locations. The first kind are "menu display files" which are what the user
sees for a "main menu" or "file menu" and tells them what they can do from
there. These are held in \Ls\Menu by default. One display file exists for
each .CON file (these are explained more in the next section, and the .CON
file tells LightSpeed what the menus can do.)
Then, the "general display files" are held in \Ls\Disp. These are used
for different purposes, a few that are normally available (they don't HAVE
to be there, and some of them don't exist, but you can create them anytime
you want.)
PrelogA.xxx ..Shown before a user enters their alias.
PrelogB.xxx ..Shown in place of PrelogA for slower than 9600 baud users.
Hello1.xxx ..Shown right after a user logs in.
Hello2.xxx ..Shown after Hello1.xxx.
...
Hello9.xxx ..Shown after Hello8.xxx.
News.xxx ..Holds the latest news (shown from main menu usually)
Goodbye.xxx ..Shown after user selects to log[O]ff or [G]oodbye.
PreSysop.xxx ..Shown before a sysop chat begins
PstSysop.xxx ..Shown after a sysop chat ends
PreUl.xxx ..Shown before user begins upload information sequence
Upload.xxx ..Shown as header for file description screen (Use caution
..when modifying this one)
Proto.xxx ..Shown when selecting transfer protocal (See file transfers)
Closed.xxx ..Shown to a user on a Closed system (See also: LSConfig.Doc)
Finally, the "bulletin" or "information" files are held in \Ls\Bull.
These are usually shown when a user selects a choice from the "Information"
menu. These are explained more later.
[1.3 - Modifying the menu system...]
Now, the most crucial part of the LightSpeed system. Its flexible
menuing system. The menuing system is what gives you the freedom to do
so much with LightSpeed, and present it in whatever form you want.
First, you've already seen what are the DISPLAYS for menus. But, that is
only a front that the user sees. What a menu actually DOES is controlled
by the .CON files in your \Ls\Menu directory. These are text files in a
format slightly like what was used by the questionares. They are called
"menu control files" or just "control" files for short.
Just like with the questionares, you can have blank lines in control
files, and lines starting with a ; are ignored. It is also safe to indent
as much as you like. However, any command in a control file must be in
this format:
- COMMAND ["Information"] ["Information"] [...]
COMMAND ["Information"] ["Information"] [...]
'k' COMMAND ["Information"] ["Information"] [...]
The k is a single letter which the user must press to activate the command.
For example, if the command is to download a file, the k or key might be
D for download. If no key and no - is specified, the command is executed
everytime the user is at this menu. The - is explained later, but is
executed everytime the menu is redisplayed. An example, a command with no
key (executed everytime the user reaches this menu):
Status "Main Menu"
(That is a valid command) A command with no key not only executes every
time the user is at this menu, but everytime the user presses a key at this
menu, no matter what that key is. The word "Status" tells LightSpeed what
you want it to do here, it is the actual command. "Main menu" is some
information to go along with the command. In this case, the "status
display" is what other users see when they select to see [W]ho's online.
For example:
[User pressed W for Who's online]
Baud User Sex Status
2400 King Burgundy Male File System
14.4k Rev.Pslock Macro Male Main Menu
14.4k Dalbeth Female Games Menu
The status of Rev.Pslock Macro was set when he entered the main menu and
a line in the main menu CON file (Main.Con by default) read as above. The
status of King Burgundy was probably set when he entered a file menu CON
file (File.Con by default) and this line was found:
Status "File System"
[ Hint for more advanced users: To save you worrying about when you need
quotes and not, just remember this rule: Anytime you need a phrase that
includes more than word, a space, you must enclose it in quotations. All
other times, you may leave out quotations. You must ALWAYS leave quotations
out of the command, in the above example that was the keyword Status. ]
Now, if a user selects to do something other than flip between menus?
What if a user wants to enter a game? How can you make the status read
"Playing Phobia", where Phobia is the name of a game?
'P' Status "Playing Phobia"
With that statement, anytime the user presses P their status is immidiately
changed to read "Playing Phobia". Notice there is a key listed this time,
the P key, which means that pressing P is what triggers the command.
An important rule to remember when working with the menu system is that
you can have an infinite number of commands for each key. That is especially
true of something like the above Status command, since you don't want a user
to have to hit P just to set their status display. The order in which
LightSpeed handles the commands is the order in the control file. For
example:
'P' Status "Playing Phobia"
'P' Door "Phobia.Bat"
In this case, the user presses P only once, in which LightSpeed FIRST
sets the user's status to read "Playing Phobia" and THEN it activates the
door in Phobia.Bat (More on that later.)
There are over 30 different commands involved in control files. However
not all of them are very important. So before we go into each command, there
are a few very frequently used ones that should be covered. First, the
MENU command.
The MENU command is relatively simple. It simply changes to a different
menu control file when a user presses a key (of course you could use it
without a key, but there's rarely need for that.) An example that is
commonly used is the command to go to the "File menu":
'F' Menu "File.Con"
So, if the user hits F, the current menu terminates. Then, the display
file matching File.Con is shown (\Ls\Menu\File.Rip, .Ans, or .Asc) and then
LightSpeed begins operating from File.Con, at which point it will probably
wait for the user to press another key. Keep in mind that the MENU command
is one reason that LightSpeed will NOT handle every command in the current
menu. For example:
'F' Status "File System"
'F' Menu "File.Con"
'F' Door "Files.Bat"
In this example, LightSpeed can never perform the 3rd command, the DOOR
command, because it will already have terminated having anything to do with
this menu when it reaches the MENU command. However the 1st command BEFORE
the MENU command is acceptable.
The MENU command also allows you to modify one of the Codes variables
(explained later.) If you specify a number or value after the menu
filename, Code[0] will be set to that value from this command. Note
however, that you cannot use the keywords ON or OFF here, as you can with
the SET command explained later. Examples:
'A' Menu "File.Con" All
'1' Menu "File.Con" 1
'2' Menu "File.Con" 2
The above would set Code[0] to All (which is the same as 0), 1, or 2 when
the A, 1, or 2 keys are pressed.
Another important command is the SHOW command. The SHOW command displays
a .Rip, .Ans, or .Asc file to the user. This file is treated just like any
other display file, and is usually kept in either the \Ls\Disp or \Ls\Bull
directories. The SHOW command is most used in the "Information" or
"Bulletin" menu. For example, if you have 3 bulletins in your menu:
'1' Show "Bull1.xxx"
'2' Show "Bull2.xxx"
'3' Show "Bull3.xxx"
Pressing 1 displays the file Bull1.Rip, .Ans, or .Asc to the user. So
on with the other two commands. You can specify MORE after the filename
if you find your screen scrolling away before you can see it.
The DOOR command works just like in questionares. All 4 keywords are
also supported here.
The IF command provides a great deal of LightSpeed's flexibility. The
IF command is best demonstrated by the need to allow only selected people
into the sysop menu (The sysop menu holds commands for system control such
as the user database which lets the sysop view and change any user's account
information.)
'!' If Sec "Sysop, Master"
'!' Menu "Sysop.Con"
'!' Endif
This example takes effect when the user presses the ! key. First, the
IF statement is encountered. LightSpeed thinks "this guy IS a sysop, its
okey to go on." So it encounters the Menu command and jumps off to that
menu. What if the user ISN'T a sysop? LightSpeed would ignore the MENU
command, and any commands, until it reaches the ENDIF command. Why is it
checking that the user is a sysop? Because the "Sec" is short for Security,
and (in this example) sysops have either "Sysop" or "Master" security
classes. The example is TRUE when the user has security classes of Sysop or
Master, and is FALSE when the user has any other security class. When an
IF statement is TRUE, it executes the commands that are between the IF and
ENDIF. When an IF statement is FALSE, it does NOT do execute any of the
commands that are between the IF and ENDIF, and continues with any commands
PAST the endif.
There are multiple forms of the IF command. However all forms of the IF
command require a matching ENDIF statement later. IF commands can be nested,
which means you can have an IF inside an IF inside an IF... There are many
different uses of the IF command.
'k' IF ASK YES/NO
This simply waits for user to press Y or N. You specify EITHER Yes or No
in your command. If the user hits Y and you specified YES, the IF statement
is true, if the user hits Y and you specified NO, the IF statement is false.
Examples:
'P' If Ask Yes
...Whatever commands are here will only happen when the user pressed Y...
'P' Endif
'k' IF CODE[x] ON/OFF/comparison [####] ..This is explained later.
'k' IF UPDATED "filename,filename,filename,..."
In the above, the IF statement is true if any of the filenames have been
modified since the user's last call. You can specify any number of filenames
seperated by commas. For example:
'N' If Updated "Bull1.xxx,Bull2.xxx,Bull3.xxx"
'k' IF FLAG[x] ON/OFF
The above command may not work in this early version, however it would
allow you to do some extra "grouping" of users. "Flags" can be set to a
number, a number of days, by the sysop. Each user can have 20 different
flags (the "x" in the above states which one is being checked here.) After
the number of days, or if the flag is never turned on by the sysop, the flag
is turned "OFF". Otherwise the flag is turned "ON". Specify EITHER ON or
OFF in the IF statement just like with the If Ask (Yes or No) command.
'k' IF SUBMENU[x] ON/OFF
The above command may not work in this early version, however it would
allow you to turn off parts of the system after a set amount of time. For
example, say you didn't want any users to use the file system more than 30
minutes a day, but you don't mind them playing doors for up to 60 minutes a
day? To fill this scenario, you would give the user 60 minutes a day total
(done by their security class) and use this to enter the file system (This
would be placed in the MAIN control, main.con, and controls the user's
ability to GET TO the FILE control, file.con):
'F' If Submenu[1] On
'F' Menu "File.Con"
'F' Endif
And finally, you set the security class you want modified. Under LSConfig,
you would go to the security class of interest, and select "Submenu levels",
and set submenu-one to "30" for 30 minutes a day. The above IF statement
would be true for the first 30 minutes a user is online each day.
'k' IF AGE comparison xxx
In the above, 'comparison' can be >, >=, <, <=, ==, or = marks. The xxx
is any number. This simply allows you to limit commands to certain age
groups. For example:
'D' If Age >= 21
Make sure you have spaces between AGE, comparison, and the number, but
NO spaces in comparison. If Age>=21 would NOT work. If Age > = 21 would
NOT work. But If Age >= 21 would work. This applies to all "comparison"
style IF statements. The above IF statement is true if the user's age was
21 or over.
Comparisons can be:
> ...meaning "greater than"
>= ...meaning "greater than or equal to"
== ...meaning "equal to"
= ...meaning "equal to"
< ...meaning "less than"
<= ...meaning "less than or equal to"
! ...meaning "not equal to"
!= ...meaning "not equal to"
'k' IF BAUD comparison xxxxx
The above works just like the AGE statement, except it checks what the
user's baud rate is. xxxxx might be 2400, 9600, 14400, etc. You can NOT
use commas, periods, letters, or anything else inside your number (such as
14.4k. It would NOT work, you must use 14400 instead.)
'k' IF ANSI ON/OFF
The above tests if the user has Ansi color enabled, RipTerm enabled, or
is using LTerm with color enabled. You specify EITHER ON or OFF. IF ANSI
OFF is only true of ASCII (Non-color) users.
'k' IF RIP ON/OFF
The above tests if the user has RipTerm enabled. You specify EITHER ON
or OFF.
'k' IF DOORLEVEL comparison xxxx
All security accounts have a setting named DoorLevel. In a Door.Sys
door, this is the only setting the door has to indicate a user's security
level, so the number here is an alternative way of saying "this user is
un-paid" or "this is a sysop", depending on the value of DoorLevel. This
setting can also be used by menus for whatever reason you choose. The
value is set in LSConfig:Security Classes. It is always a number.
'k' IF NEW PRIVATE/PERSONAL/PUBLIC[S]/POST[S]
The above is true if the user had new mail of the specified type waiting.
See also: The Mail System.
'k' IF SEC "class,class,class..."
The above is true if the user's security class is one specified. For
example:
'!' If Sec "Sysop,Master"
'!' Menu "Sysop.Con"
'!' Endif
The above would allow only users with the security class of either "Sysop"
or "Master" into the Sysop menu.
'k' IF -SEC "class,class,class..."
The above proceeds only if the user's security class is NOT listed. This
statement is best used in denying certain users privilages, an example
might be:
'T' If "-Sec" "Demo"
'T' Door "Teleconf.Bat"
'T' Endif
The above might prevent user's with the security class of "Demo" from
entering Teleconference. The command can also be used to lock out unwanted
users from selected operations, for example: Preventing users who has caused
trouble before in a game from getting into it again.
'k' IF USER "handle,handle,handle..."
Tip: Handle means the same as user alias.
This command allows even more descresion upon who can use parts of the
system. It allows only users that have a handle specified in the list
to proceed. This command could be used to allow only a single person, or
a small group of named persons to do certain operations. The most obvious
use is the sysop menu by specifying only the sysops in the list, however it
is generally better to use a security class for that. Example:
'L' If User "Terror,Bob,Evil"
'L' Door "Lord.Bat"
'L' Endif
The above would allow exactly 3 users to open a door named Lord.Bat.
No-one except Terror, Bob, and Evil users could enter it.
'k' IF -USER "handle,handle,handle..."
This command is extremely useful in preventing unwanted users from getting
into places they shouldn't be. It is true only if the user's handle is NOT
listed. For example:
'W' If -User "Runningfrog"
'W' Door "lsWall.Bat"
'W' Endif
The above would allow all users into "lsWall.Bat" EXCEPT for one who goes
by the alias of Runningfrog.
'k' IF NODE comparison xxx
The above tests which node the user is on. This can allow you to proceed
differently for different nodes. The most common use is when you have a
door that for some odd reason won't work on certain nodes (say you have a
slow modem on node 2 and it doesn't work with your door.) Here is how you
could still use that door on a different node:
'L' If Node != 2
'L' Door "Phobia.Bat"
'L' Endif
'k' IF LTERM ON/OFF
The above is true when the user is using LightTerm. This does NOT
necisarily mean that the user is using color or graphics, it checks ONLY if
the TERMINAL PROGRAM they are using is LightTerm (LTerm), which is the
companion program to LightSpeed. You specify EITHER ON or OFF.
'k' IF PASSWORD "xxxxxx"
When all else fails, just password it. In the above, LightSpeed will ask
for a password from the user. If the password they enter matches, not
counting case then the IF statement is true. Case is upper or lowercase
letters, in here means the password BOB is the same as bOb or BoB or bob.
For example, you could password protect a door so only certain users could
use it:
'L' If Password "OpenUp"
'L' Door "Phobia.Bat"
'L' Endif
Those are all the IF statements available to you. There is a little
additional flexibility on the IF statements, however. You can use an ELSE
statement to provide two courses of action. For example:
'!' If Sec "Sysop,Master"
'!' Menu "Sysop.Con"
'!' Else
'!' Display "Sorry, you do not have access to the sysop menu."
'!' Endif
The above simply gives a polite reason why the ! key will not work for
them. The DISPLAY command just shows a single line of text to the user.
The above would probably only be needed if the ! was listed in a menu
display, however they are valid commands.
Finally, there is one last major point to understand. LightSpeed's
"jumping off" point is the menu control file "Start.Con" in your \Ls\Menu
directory. This is the first menu used by LightSpeed, and contains what
could be considered the "login sequence" which is everything that normally
happens before a user reaches the main menu.
You should now understand all the basic form to the menu control files.
The above gives you the flexibility to make your BBS whatever you choose.
However, there are additional commands that are almost certainly needed by
every BBS. They begin with the ability to handle credits.
'k' RATE xxx
The RATE command simply sets the consumption rate for the user's credits.
LightSpeed by default uses around 5 credits per minute. (Most other BBS
systems operate on a per-second basis) The RATE command can be placed
anywhere you like, and as soon as it is reached it CHANGES how many credits
are being used at the present time. For example, you might want to increase
the credit usage whenever a user enters the file menu:
'F' Rate 7
'F' Menu "File.Con"
It is also practical to use no key in front of Rate and set it in your
menu. Remember to set your rate to start off with somewhere in
Start.Con. Also remember that the rate is adjusted automatically by the
hourly charging system (General configuration in LSConfig). You may also
set the Rate to 0, probably somewhere in your Start.Con, to disable credit
consumtion. You could set it to 0 in your Start.Con and LEAVE it that way
to disable the use of credits on your BBS (as long as you also leave out
any Charge commands, as explained now).
'k' CHARGE xxxx
The CHARGE command is an alternative way of using credits. The charge
command does not effect the minute-by-minute rate of credit consumption,
rather, it takes a sudden gulp out of the user's credit stash. For example,
you could charge 20 credits for paging the sysop (which would certainly
reduce how many people page you).
'P' Charge 20
'P' Internal 0 5
The above may seem a little confusing. In addition to having 30 different
commands in menu control files, there are about 15 more commands classified
just as "internal". The INTERNAL command is how you perform numerous
operations, including, paging the sysop (Internal command 0-5).
To tie a few ideas together, you could even ASK the user if they want to
pay the 20 credits before paging the sysop.
'P' Display "Paging the sysop costs 20 credits, continue? (Y/N) "
'P' If Ask Yes
'P' Charge 20
'P' Internal 0 5
'P' Endif
The above displays the question, waits for the user to answer the question,
then "if the user answered yes" it proceeds to "charge the user 20 credits"
and finally "to page the sysop".
For purposes of security, LightSpeed provides what is called "activity
logs". These logs are text file which LightSpeed writes as users perform
various activities. A few things can be logged by LightSpeed itself, such
as a sysop chat. Others, can only be logged by the menus. The ADDLOG
command is responsible.
'z' ADDLOG "text to be logged"
Activity Log text can have some special things in it. Additional @codes@
of sorts. The four codes are: @USER@, @SEC@, @TIME@, and @DATE@ Each is
replaced by something. @User@ is replaced by the user's handle. @Sec@ is
replaced by the name of the user's security class. The @Time@ and @Date@
are replaced by the current time and date when the logging is being done.
For example:
'T' AddLog "@USER@ is entering Teleconference at @TIME@ on @DATE@."
What about some gadgets? Well, throughout the menu control files, you
have 10 variables available to you. All 10 of them are "integers" (meaning
that they are numbers). The most common use for them is probably adding
"randomization" to your system. With a little help from them, you can make
your BBS take a different course of action at random. This is best used
to automatically change your displays regularly. Some users get easily
bored of the same screens over and over. Take the prelog for instance,
they will see it every time they call your system. What if you could have
10 different prelogs instead of just 1? This is first done by "picking a
number from 1 to 10." The RANDOM command:
'k' RANDOM Code[x] xxxx
The Code[x] just says which variable to place the random number in, where
the x is from 0 to 9, such as Code[2] or Code[7]. The variables in control
files are named "Codes". The xxxx is how high of a number LightSpeed can
pick (from 0 to xxxx). One of the IF statements we ignored earlier is
used to find out what is in the Code[]. The IF statement has 3 forms:
'z' IF Code[x] ON
'z' IF Code[x] OFF
'z' IF Code[x] comparison xxxx
On and Off aren't very important right now. Comparison works just like
in most other IF statements. An example using RANDOM and IF Code[x]:
Random Code[1] 10
If Code[1] >= 4
Show "Prelog1.xxx"
Else
If Code[1] < 2
Show "Prelog2.xxx"
Else
Show "Prelog3.xxx"
Endif
Endif
The above is a little more complicated than usual. First, it gets the
random number and places in it in Code #1. Then, we check "if the
random number was greater than or equal to 4", which has a 50% percent
chance of happening (The number could be anywhere from zero to 9, because
we told random "limit of 10".) If it WAS higher than or equal to 4, we
display Prelog1.Rip, .Ans, or .Asc and are done. If it WASN'T, then we
proceed to the ELSE part. The first thing we do now is check "if the random
number was less than 2", which has about a 30% percent chance of happening.
If it WAS less than 2, we display Prelog2.Rip, .Ans, or .Asc and are done,
if it WASN'T, we do what the ELSE says instead, in which case we display
Prelog3.Rip, .Ans, or .Asc and are done with.
You can also give Code[]s a value yourself, as well as flags and submenus:
'z' SET Code[x] xxxx
'z' SET Flag[x] xxxx
'z' SET Submenu[x] xxxx
The above just fills code[x] with the value xxxx, just like a random
command except that the value is ALWAYS xxxx, or it fills the Flag[x] or
Submenu[x] with that value. There is also one almost "secret" feature here
which may become useful at times.
'z' SET Flag[%x] xxxx
The above adds a bit of randomization to the flags. The x after the %
should be replaced by a number from 0-9, and indicates the highest flag
that can be "picked". When the command is used, the %x will be replaced by
a random number between 0 and the x. For example, Flag[%3] could end up
as Flag[0], Flag[1], Flag[2], or Flag[3].
Then there's a few commands you may need for keeping things nice looking:
'z' ENTER
'z' PRESS
ENTER just shows a prompt and waits for the user to press Enter/Return.
PRESS just shows a prompt and waits for the user to press any thing (The
only problem with this is, although easier for the user, line noise can
also pass for a key they've pressed.)
If you ever get tired of the General Configuration you've made in LSConfig,
you can switch to another one in mid-operation by this command:
'z' CONFIG "filename"
You'd have to use the MS-Dos COPY command to get a second General
Configuration made in a different file. The default filename is "Config.Dat"
The PRINT and DISPLAY commands just send short messages to the screen
and user. The DISPLAY command shows a line and then a line-feed (Moves
down the next line on the screen), where the PRINT command shows ONLY what
you've told it to (You can use PRINT 3 or 4 times on the same line of the
screen, but DISPLAY only once.)
'z' DISPLAY "your text here"
'z' PRINT "more text here "
'z' PRINT "this would be written on the same line"
The above would show up as:
your text here
more text here this would be written on the same line
The LOGIN command is normally used only once in your START.CON file. It
is the point at which LightSpeed prompts the user for their handle and
password. It is perfectly safe to perform most operations BEFORE the LOGIN
command, however you should use a little caution, and keep in mind that
a user who has not given their name and password only has about 5 minutes
to do so before being disconnected.
There are multiple uses for moving the LOGIN command around. You could
"split" your system up into multiple BBSes if you wanted. You might do so
by presenting a menu with 3 or 4 different BBSes listed, and each one take
another path. Although it is also possible (and recommended) to "split"
your system up AFTER the user has logged on (The first thing they do,
perhaps?) Normally, Start.Con has no matching menu screen (No Start.Rip,
Start.Ans, or Start.Asc) however you CAN create one if you like.
The LOGOFF command works the opposite. In LightSpeed, it disconnects the
user and waits for for more calls. In a door using LightSpeed's menu control
files, it exits the door and returns to the BBS. You may have difficulty
finding the LOGOFF command in the default menus. That's because it is a
"global" command. "Global" commands are ones which execute from any menu,
and are Global for the purpose of speeding up the system and not having to
repeat adding them to every single menu you have. The globals are just like
all other menu control files, except A) Even if you erase all the global
commands, the Globals.Con file must still exist in your LightSpeed \Menu
directory. And B) A display file for globals will be ignored
(Global.Rip, .Ans, or .Asc). Finally C) Globals are executed BEFORE other
menu commands.
The QUEST command is very simple. It begins a questionare like you learned
about above. Automatically, LightSpeed expects a new user questionare for
any "Open system". This is usually the New.Qst file in your \Ls\Quest
directory, but you may have changed it with LSConfig. The other normal
place for using a QUEST command is the registery menu, where a questionare
allows you to give the information for your "reg".
'z' QUEST "filename"
Example:
'F' Quest "Reg.Qst"
The "questionare answer file" is always the same file with the extension
.Out attached (in this case, Reg.Out.) Although LightSpeed only uses
questionares by default for new users and registeries, you can use
additional questionares if you choose, probably for the purpose of some
information gathering you may need.
Although it is recommended you avoid using it if possible, there is a
command called BREAK. The BREAK command stops reading that key at that
point (it COULD be used without a key but would serve no realistic purpose.)
For example:
'P' Display "This line is fine"
'P' Break
'P' Display "This line can never be seen"
Although that is also un-realistic, as the only real use for a BREAK is
in an IF statement.
'P' Display "Continue on? (Y/N) "
'P' If Ask No
'P' Break
'P' Endif
'P' Display "This line can only be seen if the user answered YES"
'P' Display "As can this one"
The above is something of a double-negative. Whenever the BREAK command
is reached, it prevents reaching any further commands with that key.
The CLS command is extremely simple, and just clears the screen on both
the user side and your side.
'z' CLS
The REMENU command is also very simple for display purposes. It redisplays
the menu just as if the user had pressed ENTER.
Finally, the SUBMENU and EXIT commands allow a little more depth to the
menuing system. Normally, when you change menus, the previous menu is
totally forgotten. However, when you use the SUBMENU command instead of the
MENU command, the menu you came from is remembered. Its best used for
an information/bulletin menu or a sysop menu. For instance, if I go from the
main menu to the information menu, I might want to be able to hit X to get
back to the MAIN MENU. If I go to it from the file menu I might want to hit
X to get back to the FILE MENU. Although it is only possible to remember
a single menu level before an error occurs. That is where EXIT comes in.
The EXIT command simply returns you to the menu from whence you came.
[Inside Main.Con]
'I' SUBMENU "Info.Con"
[Inside Info.Con]
'X' EXIT
When you hit I from the Main menu, you would be transferred to the Info
menu. When you pressed X from the Info menu, you would return to whatever
menu you were at before.
One possibility left to cover: What if you try this?
'J' If Ask Yes
'O' LogOff
Status "Doing Something"
'J' Door "Joke.Bat"
'J' Endif
The above is a bit confusing. It will be very rare to see such a mess,
however it IS alright. If the user hits J, the above will perform the
IF ASK YES command, then set the status to "Doing Something", and finally
the DOOR "Joke.Bat" command (if they answered yes). If the user hits O, the
above will logoff and end there. If the user pressed any other key and
passes through the above, the status will ALWAYS be set to "Doing Something".
Now, what if we do the opposite?
If Code[4] On
'J' Status "Doing Something"
'O' LogOff
'J' Door "Joke.Bat"
Endif
The above will work just fine, and might actually have a use somewhere.
The above will allow the 'J' and 'O' commands (at least the ones above)
ONLY if code[4] is ON. The 'J' and 'O' commands above will be disabled if
code[4] is OFF.
The last 2 commands in the menu control files are better explained a little
later. They are the UPLOAD and DOWNLOAD commands, which will be explained
in detail in the section "File Transfers". Also, more information on the
INTERNAL command is coming up. For a quick refrence to all the menu control
commands, see the appendixes.
[Part 2 - The Mail System...]
LightSpeed's mail system is the most sophisticated in existance today.
BBS Mail systems have been becoming a thing of the past very quickly. As
baud rates jump from 300 baud to lightning speeds of 28,800 in 2 years or
so, the BBSers from awhile back who found the mail base are now finding
twice as many newer BBSers who are interested more in the latest files. And
sysops can only follow the crowd.
LightSpeed attempts to bring back part of the dieing message system. It
introduces 3 new methods that make it easier than ever for user's to use
your message base. It provides mechanisms to make user->user communication
simple and effective.
[2.1 - What's so special...]
The first key to LightSpeed's powerful mail system is "Automatic
Clean-Up". Automatic Clean-Up simply searches through the message base
once every night and tosses any messages that have "gathered too much dust".
Automatic Clean-Up is extremely easy to use. The settings for it are
controlled through LSConfig's Master Configuration. It will be explained
in-depth in a moment.
The next method for LightSpeed's flexible mail system is extended division
of the messages. Previously, there were commonly two types of messages:
Private (or personal e-mail) and public. Private were simply messages sent
from one person to another and read by no-one else. Public were messages
that were either written to ALL intending to catch someone's eye or when
a person was asked if they wanted the message public so that anyone
interested could review it freely.
LightSpeed brings forth a new type of message, the "Post". Now, public
messages are those which are between one person and another, but are marked
as open to all who are interested. Posts, on the other hand, are messages
intended to be seen by as many people as possible.
Before I can completely explain Posts, I must introduce another powerful
feature. The "conversation" is a type of message not directed to ALL, but
written to more than one target. Users can create conversations simply by
listing more than one person's handle seperated by commas in the "To:" field
of their messages. For example:
To [Enter=Abort]: Terror, Alien, Infinity
There are also two types of conversations, public and private. Private
conversations are treated just like private messages, except that all the
people listed will receive the message and have the chance to reply instead
of just the one person. If they do reply, they become the "From" person and
everyone else involved in the conversation is written "To".
A public conversation brings forth yet another opportunety. Anyone not
involved in the conversation who happens to glance at it can join in the
conversation. And any replies of the future will involve them. The more
they have to say the quicker they will become a full part of the
conversation, or they can reply just once and slowly become involved.
Now, the strict definitions:
Post: A message written to ALL or a conversation in public
Public: A message written to a single individual, marked as public
Private: Any message marked as private
There is also a feature of LightSpeed called Broadcasts. These are simply
messages sent to "All Users" which users will receive as if it was a Private
message to them (Although it says it is written to All Users and is Broadcast
in the message header.)
Remember: Sysops have the right, by-law, and are expected to, read
private e-mail even when it isn't directed to them. It is against the law
for sysops to NOT monitor the private communications on any open public BBS.
[2.2 - Simple tricks...]
If you don't like the idea of 3 kinds of messages, you are free to combine
posts and publics. Also, you can select which ones will be automatically
scanned for as "new mail" when a user logs on, if any. Any that aren't
automatically scanned for must be selected from a mail menu to be seen. To
combine posts and publics, simply attach both to the same key on the menus.
The menu commands you should know are:
'z' IF NEW PRIVATE/PERSONAL[S]/PUBLIC[S]/POST[S]
That was explained before, except now you know what the differences are.
Private and personal are the same thing.
'z' INTERNAL 3 0 ["To"] ; Write Message
'z' INTERNAL 3 1 Private/Personal/Public/Post ; Search for new mail
'z' INTERNAL 3 2 ; Search through mail
'z' INTERNAL 3 100 ; Write Broadcast
The 3-2 command is best as an option such as [S]earch mail from your
mail menu. It is also the best way for a sysop to access private messages
(any message which would be otherwise hidden is shown in a darker blue).
The 3-1 command is best used both at logon and as an option from your
mail menu. It is greatly recommended that you AT LEAST scan for new
PERSONAL mail at logon. That would be:
[In Start.Con]
Internal 3 1 Personal
You may want to ask a user if they wish to read their new mail first.
That can be done like so:
[In Start.Con]
Display "Searching for new mail..."
If New Personal
Display "You have new mail, do you wish to read it now? (Y/N)"
If Ask Yes
Internal 3 1 Personal
Endif
Endif
The 3-0 command is best used as an option from your mail menu only. It
also provides one of the most convenient features of LightSpeed:
By specifying the optional "To" part of the 3-0 command, you can setup
menu options to write to any user on your system. The basic example is the
comment to sysop command usually from your main menu:
'z' Internal 3 0 "Terror"
(Assuming your handle is Terror, grin) However there is no law that states
that the target user must be a sysop. ANY user on your system can have a
command like that, which is an excellent feature for any information
service. One thing you might check: The target user must have access to
the first mail area the user who writes the message has access to, or it
will be impossible to receive it. For example, if Terror has access to
mail area 3 but a user can write him who has access to mail area 1, then
the message will be in a mail area Terror can't get to. You could also
specify multiple users, or ALL for the "To" user.
Of course, if you leave the 3-0 command with no "To" user, it turns into
the "Write Message" command and asks for the necissary information.
Finally, the 3-100 command has no options, and only asks the mail area for
the message to be placed in. It is best placed in a sysop menu, or have its
access limited to selected users. A option in LSCONFIG-Master configuration
controls the maximum age of a Broadcast message before deleting.
[2.3 - The details...]
The message system is a tight part of LightSpeed, and takes very little
configuration from the sysop. With that tightness, all the commands you
can use are already built-in to LightSpeed. In detail, they are:
Commands from ESC command-bar during message writing...
[S]end ...Saves and sends the message
[A]bort ...Cancels the message and exits the mail editor
[C]ontinue ...Resumes message editting
a[T]tach Credits ...Attaches credits to the message to be picked up by
the message recepient when they choose
[U]pload ...Uploads and attaches a file at the current position
During message editting...
[Ctrl-R] ..Redraw message [ESC] ..Editor Commands
[Ctrl-Y] ..Erase current line [Ctrl-K] ..Block Commands
During message viewing...
[E]dit ...Allows you to modify your message
[R]eply ...Reply to a message
[*] Repeat ...Redisplays the message
[1] Normal ...Leaves the sysop commands
[2] Sysop ...Shows first part of the sysop commands
[3] Sysop ...Shows second part of the sysop commands
[C]opy ...Copies the message to another receipient
[F]oward ...Fowards the message to another receipient
e[X]it ...Ends the message viewing
[D]ownload ...Downloads files if any are attached
[-] Back ...Goes back to previous message
[Enter] Next ...Moves on to the next message
[T]o ...[Sysop]...Changes who the message is "To"
[F]rom ...[Sysop]...Changes who the message author is
[S]ubject ...[Sysop]...Changes what the message's subject is
[D]elete ...[Sysop]...Destroys the message
[P]rivacy ...[Sysop]...Toggles between public and private
The LSConfig Master Configuration allows you to change how many days
pass before a message is automatically deleted for its age. Leaving any
of the numbers blank or 0 in the Master Configuration will disable deletion
of that type of message. Public and Post messages are actually not
considered "read" until they have replies. The recommended settings for
the Master Configuration are:
Private Un-Read: [30] Private Read: [ 7]
Public Un-Read: [40] Public Read: [25]
Posts Un-Read: [45] Posts Read: [20]
In addition to setting these values, you must run UPGRADE.EXE every night
to perform the actual sweeping. Although you can do this manually when you
wish, you should set up an event to do this nightly, see: System Events.
[Part 3 - The file system...]
In today's BBSing community, a BBS's file system is by far the most looked
at and used part of the system. History has shown that only a BBS's file
system can attract callers from across the nation to your system. But you
don't need a million files to get started, just the ability to upload and
download and a few files can keep users' interest. And that ability is well
kept in LightSpeed.
[Note: Actual uploads and downloads are disabled in the Trial Edition]
Listing files...
Uploading is the process to adding new files to the BBS system, by user's
transmitting the files from their computers to yours. LightSpeed handles
uploads in a unique way to simplify and minimize the sysop's work.
LightSpeed can list its files in 3 ways. The first is the BBS's file
listings, which users can access. That can be accessed simply by the
internal menu command 2-0...
'L' Internal 2 0
You can also specify a "menu set" to list. This is ALL sets by default.
This menu set is a number specified like so:
'L' Internal 2 0 3
Using menu set 0 indicates ALL sets as well. All file areas have a number
selecting their menu set, a file area in set 0 is global to ALL menu sets.
With this you can specify where the menu set will be used in your menuing
system. You can have up to 255 menu sets. By placing a 3 after the Internal
2-0 command, you specify to list all file areas that include menu set 3.
(Each file area may be a part of up to 5 different menu sets.)
If you have more than one file area to be listed, the user is allowed to
choose between them before the files are actually listed. Otherwise, the
only choice available is automatically picked.
Uploading Files...
'U' Upload [MenuSet] [FileArea] [FileName]
The above command allows the user to upload files to your BBS system.
If it is plain ('U' Upload) then it lets the user pick between ALL menu
sets (with LightSpeed, the user first selects a file area to place the
upload in.) If you specify a number for MenuSet, the user may only pick
file areas in that menu set (if there is only one file area it is
automatically used). If you specify a number for FileArea, the user is
not asked what file area they wish to upload to and the area stated is
used instead. If you specify a FileArea, the value for MenuSet is ignored,
however it must still be specified so that FileArea is always the second
field. Example:
'U' Upload 0 4
The above would select file area 4, regardless of the menu sets file area
4 is a member of. If you specify a FileName, then whatever is uploaded will
be renamed to that filename. WildCards are acceptable for this entry.
If you specify a FileName, you must also specify a MenuSet and FileArea,
however the MenuSet will again be ignored.
Downloading Files...
'D' Download [FileName]
The above command brings the user to the Download control menu. From there
they can manage the files they have marked/tagged, select to download them,
and other activities. If you specify a FileName, then the user will skip
the Download control menu and begin a download of FileName only (WildCards
are okey for this field.) You should specify the path as well as the actual
file name. Example:
'D' Download C:\Files\Doom.Zip
Searching for files...
In this early version of LightSpeed, searching for files is not yet
possible. However, you may want to add this command to your menus
somewhere, as this feature will become available with the next version of
LightSpeed.
'S' Internal 2 4 [MenuSet]
This command opens the File Search menu. The user can select certain
file areas to search through. If a number for MenuSet is specified, the
user can only select the file areas in that MenuSet (it is recommended that
you NOT specify a MenuSet for search commands.)
Adding file transfers protocols...
[This feature is normally only needed by experienced and advanced sysops]
LightSpeed can allow additional file transfer protocols than those built-in
to the system by default. There are three steps to this process. First,
modify the (regular text) file Proto.Txt in your LightSpeed directory.
Instructions for modifying it are provided on the first 7 lines.
Second, modify your Proto.Rip, .Ans, and .Asc files in your Disp\ directory.
Third, modify the FTP.BAT file in your LightSpeed directory to handle the
new protocol. If the transfer is successful, create a file named
Ls_XFer.Ok in your LightSpeed directory. FTP.BAT is called with the
following information:
%1 the keyword Upload or Download
%2 the lowercase form of the letter in Proto.Txt for this protocol
%3 the filename to transfer
Rules of transfer...
LightSpeed applies the following limits to all file transfers:
1... The user may not download after running out of credits. The credit
consumption rate remains in effect during downloads as specified by the
menuing system.
2... The user may not download after running out of time for the current
call, or for the day.
3... The user may not download if they have passed their upload:download
ratio.
4... The user may not download if they have passed their upload:download
K bytes ratio.
5... The user may not download if they have passed their daily files or
K bytes limit (as set by their security class).
6... The user may not upload after running out of credits, you should
set your menuing system to set the credit consumption rate to 0 during
the transfer, and back to normal after the transfer to encourage uploads.
7... The user may upload after their time has run out, however if they
pass their time limits they will be disconnected immidiately after the
transfer. There is not yet any upload-time/compensation feature in LS.
Managing upload traffic...
LightSpeed handles uploads to your BBS unlike other systems. There are
2 ways for sysops to view files on their BBS. The first is the menu
command 2-100.
'F' Internal 2 100
You can also "screen" the files to view, and view only new uploads to
your system. A file is marked as a new upload when it is uploaded and
left that way until a sysop changes it. If a user changes it, it becomes
an "approved" file. Non-sysop users may not access any files which have
not yet been approved.
'N' Internal 2 101
The above is the command to view all new uploads to the system. Sysops
will also see "new uploads" when they are viewing the regular file
listings, however the new uploads will be shown in a blue color different
from the other files.
To add masses of files to your BBS, the best way is to use the LightSpeed
companion program LsFile.Exe, provided with LightSpeed. LsFile has no
documentation yet, however is simple to use. The file_id.diz and
desc.sdi file searches are disabled for now (bugs) and ignored by LsFile.
All files added with LsFile are "approved" unless the sysop does not
enter a description for them.
You can also add files already present in your file directories by
performing a local upload. (No upload actually occurs, just go through
the process of uploading) All files present in the directory of the file
area you upload to that AREN'T already in the file database will be shown
for you to enter descriptions to.
[Part 4 - Installing Doors...]
All doors included with LightSpeed follow a pattern for being setup.
Samples are included to make setting up the LightSpeed doors as simple as
possible. If you are new to operating a BBS, then reviewing how the batch
files work might provide valuable insight in setting up other doors (ones
not included with LightSpeed, mostly created by 3rd parties.) If you don't
know what a Door.Sys or InfoLink.Dat is, refer to the glossary of terms.
[4.1 - LightSpeed Companions]
WARNING:
If you are going to use LsVerify at this time, be aware it is severly
undertested at this time. Also, LsChat and LsPlanets are somewhat untested.
LsVote & LsChat are in excellent condition.
At this point, there is no, or extremely limited (and out-dated),
documentation on LsChat, LsWall, LsVerify, LsVote, and LsPlanets
companions. Batch files are included to help you figure them out.
LsChat, LsWall, LsVerify, LsVote, and LsPlanets are all included with
LightSpeed (with the exception of the Trial edition). Care has been taken
to make setting doors up with LightSpeed as easy as possible. The Ls-series
of doors all follow the same basic procedure for setting up:
[Step 1]: Create a directory to store the companion door in. It is
highly recommended that you first create a directory on your hard disk
named \Doors (Preferably from your root, and not a subdirectory of the
LightSpeed directory.) Then, for each door you create, add a subdirectory
to hold it, for example, make a directory named C:\Doors\LsVote.
[Step 2]: You will find the files for the doors in a zipfile in your
LightSpeed directory, if LightSpeed is setup correctly. To unzip the files
into the directory you have created for them, use this command:
(Make sure you are in your LightSpeed directory and PkUnzip is in your path)
PkUnzip LsVote.Zip C:\Doors\LsVote
Replace C:\Doors\LsVote with the name of the directory you created, and
replace LsVote.Zip wth the zipfile holding the door you are setting up.
They are: LsVote.Zip, LsChat.Zip, LsWall.Zip, LsVerify.Zip, and Planets.Zip.
[Step 3]: You must now create a batch file to run the door from your BBS.
Several example batch files are included in your LightSpeed directory as
examples, and you may already have your door setup. If not, your batch file
will look something like this:
C:
Cd\Doors\LsChat
LsChat.Exe I%InfoLink%
Exit
Replace the C: with whatever drive you placed the door's files on, if
needed. Also change the name of the directory to the one you placed the
door's files in, if needed. For doors other than LsChat, change LsChat.Exe
to the executable file (The same as the name of the program except LsPlanets
where the name of the executable file is Plan.Exe).
If you are installing LsVote.Exe, you will need to make one additional
change. Add a line after the one calling LsVote.Exe and before the Exit
which reads like this:
LsVote.Exe I%InfoLink% +
LsVote has two modes built-in, controlled by the plus symbol. If no plus
is specified, LsVote only allows users to vote on topics. If a plus is
specified, the users will NOT vote on topics but instead will be allowed to
view the results and create new topics (depending on your LsVote setup.)
You do NOT have to place the line without the plus here if you don't want.
You can place it anywhere, sometimes you may wish to place the line without
the plus in your Login.Bat file (which is normally called after a user logs
in instead of a menu), and place the line with the plus as a door from one
of your menus.
[Step 4]: If you have not already done so, you must add a line in your
menus somewhere that includes a DOOR command for your batch file. For
LsVote, this line might read as follows under your main menu:
'V' Door "\Ls\LsVote.Bat"
That is, if the batch file is named LsVote.Bat and in the directory \Ls.
You might also need to modify your menu displays to show the new door as
an option.
Note: LsWall is normally called by Login.Bat, which is tied to the
menu Start.Con.
[4.2 - Other doors]
In addition, most LightSpeed-style doors (those that use the InfoLink.Dat
drop file) will follow these formats for their command line, depending on
the dropfile supported by the individual door:
LsGeneric.Exe I%InfoLink%
LsGeneric.Exe D%DoorSys%
LsGeneric.Exe LOCAL
One of the above should appear above in a batch file that calls the
doors. IMPORTANT: Make sure the last line in your batch file is like this:
Exit
No other information should be present on that line, and it terminates the
batch file and returns control to LightSpeed.
The following % codes can be used in your batch files to represent
different information:
%Node% ..Replaced with the number of the current node, Example: 3
%BaudRate% ..Replaced with the baud rate of the current caller, Ex: 19200
* %DoorSys% ..Replaced with the drive, path, and filename of the
Door.Sys file, Ex: C:\Ls\Node3\Door.Sys
* %InfoLink% ..Replaced with the drive, path, and filename of the
InfoLink.Dat file, Ex: C:\Ls\Node2\InfoLink.Dat
+ %Code0% ..Replaced with the current value of Code[0]
...
+ %Code5% ..Replaced with the current value of Code[5]
+ The %CodeX% values can only be used if the keyword CODE or CODES is
present in your menu's DOOR command, see Part 1.4 - Modifying the menu
system under the DOOR command for more information.
* If the Quick, InfoLink, or DoorSys keywords are present in your menu's
DOOR command, only one or neither of the dropfiles (Door.Sys and
InfoLink.Dat) will be created and available for that door. For more
information, see Part 1.4 - Modifying the menu system under the DOOR
command.
Additional % codes can be made available by adding this line to your Batch
file prior to refrencing the % codes:
Call Port%Node%.Bat
After the above command is executed, the following % codes are added, -IF-
the PortX.Bat file is setup properly (See also Part 1 - Getting Started
under Step 7 for more information.)
%ComPort% ..Replaced with the current comport, Ex: 2
%ComId% ..Replaced with the current fossil port (if applicable), Ex: 1
%Irq% ..Replaced with the current port's IRQ setting, Ex: 3
%Base% ..Replaced with the current port's hex base address, Ex: 3E8
To use any % code, just type in the % code's name (i.e. %ComPort%) and
when the batch file is running it will automatically be replaced by the
correct value.
[Part 5 - Keys & Local Commands...]
There are a few commands you should know throughout operating LightSpeed:
When no user is logged on, you can press Alt-L to logon "locally". You can
press Alt-S to logon "locally" under the sysop's alias. You can press Alt-X
to exit LightSpeed to DOS or the calling batch file.
Any sysop user may press Alt-S (this may require "doorway mode" on some
terminals, and may be impossible on others) to shortcut to the sysop's
user database, the listing of all user accounts on the system. The user can
press Alt-S or X to exit the user database and return to what they were
doing before.
Local keys:
[F1] Decrease the size of the status bar...
[F2] Increase the size of the status bar... (Up to 4 lines)
[F3] Turn sound off/on (You cannot HEAR sysop page without sound)
[F4] Turn page off/on (Users can page even without sound)
[F7] Decrease user's time remaining by 5 minutes...
[F8] Increase user's time remaining by 5 minutes...
[Ctrl-F7/F8] Decrease/Increase user's time remaining by 15 minutes...
[Alt-F7/F8] Decrease/Increase user's time remaining by 1 minute...
[F9] Online upgrade (Change security class or user's credits)...
[F10] Enter/Exit sysop chat (use to answer a sysop page)...
[Alt-H] Hangs up the current user. Works on local logons as well.
Note: Alt-H also works when the node is "Waiting for Carrier [##]"...
[Part 6 - Glossary of Terms...]
BBS - (Bulletin Board System) A computer system which answers telephones
using modems and allows various services with users. LightSpeed is
considered "BBS Software" as it serves as the software portion of a BBS.
Carrier - The sound made by the modem, allowing the data transfer. Also:
If carrier is "lost" or "dropped" it means the connection between the two
modems has been lost. A carrier is always present in normal modem
communication as long as the modem is communicating with another modem.
CoSysOp - (Co-System Operator) A person who assists in operating a BBS
system. With LightSpeed, these people normally have "Sysop" security
clearance. Only a "Master" security user may assign "Sysop" security
clearance to others.
Door - A program, often sold seperatly or distributed freely, that can be
operated through the BBS without modifying the BBS Software. Most often,
door programs are games which users can play. The users "invoke" the door
by selecting it from the BBS system's menus, which causes the BBS to "swap
out" (wait in the background) and load the door program. [This feature is
not available in the trial edition of LightSpeed]
Door.Sys - The most common form of DROPFILE (See below). In LightSpeed,
and many other applications, refers to the 52-line version of the Door.Sys
standard. The shorter version is NOT supported by LightSpeed.
Download - Transfer of a file from a BBS system using a file transfer
protocol such as Z-Modem. On a BBS, downloading is normally selecting a
file from the BBS system's listings and receiving it. Users usually select
files from a BBS system and download them when they need a file, because BBS
systems have a much greater variety of files than ordinary computers (the
reason is the flow of files in and out of the BBS from large numbers of
people, and the BBS often having more storage/hard disk space than other
computers.)
Dropfile - A data or text file created by BBS Software to provide
information to door programs. Usually, dropfiles are very small and take
little hard disk space. They are also removed after the door has finished
executing. LightSpeed supports 2 types of dropfiles, Door.Sys and
InfoLink.Dat. The Door.Sys drop file is sometimes considered a standard
among BBS systems and doors and is supported by almost all door programs.
E-Mail - (Electronic Mail) On LightSpeed, this is known also as a
"personal message". EMail often refers to messages transmitted to and
from the internet, however can also be considered messages on a single BBS.
For example: A user might write EMail to the sysop asking him a question,
and the sysop might respond with more EMail back to the user.
File Transfer Protocol - The communications protocol used to transfer a
file from one computer to another, or to and from a BBS. The most common
FTP is "Z-Modem" or "Z-Modem MobyTurbo" which is reliable and fast.
InfoLink.Dat - A DROPFILE (See above) unique to LightSpeed. The
InfoLink.Dat file is not supported by doors except those written specifically
for LightSpeed. All the LightSpeed companion doors (LsChat, LsVote, etc)
require the InfoLink.Dat dropfile and do not support the Door.Sys dropfile.
Internet - A web of interconnected networks around the world. The internet
is connected through BBS systems, networks, government agencies, schools,
etc. Support for LightSpeed connections to the internet are planned but
not yet available.
Login or Logon - The process of connecting to a BBS and identifying a user,
can also refer to the events between entering identification and when the
main menu is displayed.
Modem - (Modulator/Demodulator) Common computer peripherial which can make
and receive ordinary phone calls with other modems and establish a data
communication between two computers.
Node - A phone line, with a single modem answering calls and allowing
access to a BBS system. Also called a "line" refering to the phone line
required.
SysOp - (System Operator) The person or persons operating a BBS system.
In almost all cases, the person who owns the BBS system's computer and the
one who purchases the BBS software such as LightSpeed. In LightSpeed, this
person normally is the only one to have "Master" security clearance.
Upload - Transfer of a file to a BBS system using a file transfer protocol
such as Z-Modem. (A common misconception is that when a user is "receiving"
a file from a BBS it is considered to be a upload to the user, but correctly
is a download from the BBS.)
[Part 7 - Troubleshooting...]
Q. When I start up LightSpeed it says "-=Please wait=-" in the corner
and then "-=Retry #xx=-" and finally says "Error: Cannot open file ???"
A. LightSpeed is unable to access one of its disk files, check that Ms-Dos
SHARE is loaded and FILES=[at least 30]. See Part 1 - Getting Started:
Step 2 for more information.
Q. What does the LaserLink section of LsConfig do?
A. It is probably innoperational at this time, so you are best to avoid
using it. See also: Appendix A - Known bugs, and Introduction: Future
Plans.
Q. LightSpeed has to retry initializing the modem multiple times, and
sometimes fails. Am I doing something wrong?
A. No, it is normal for LightSpeed to retry the modem init, until it
passes Retry #6 at which time LightSpeed will abort to DOS. This can
happen on a few rare occasions, you may need to modify your batch file
to handle it, such as rebooting, or reloading the LightSpeed after it
aborts. See also Appendix A - Known bugs.
Q. Once an hour LightSpeed seems to initialize the modem again. What
gives?
A. LightSpeed resets the modem once an hour to make sure that the serial
port has not crashed. It is a simple safety precaution to prevent the
system from loosing the ability to answer the phone. If the serial port
has crashed, LightSpeed will not be able to initialize it again and will
return to DOS or its calling batch file. See also Appendix A - Known
bugs.
[Part 8 - Pricing and upgrade policy...]
Notice: These prices are subject to change at any time without any
prior notice. These are the current prices of LightSpeed at this time.
Edition Nodes Current Price
Trial Edition 1 Shareware (Free)
Single Line 1 $ 40
Dual Line 2 100
Cobra Edition 6 300
MultiLine Edition 20 800
Support available up to 999 nodes, call for pricing...
All systems support a free local node for the sysop's personal use.
[8.1 - Upgrades...]
Our upgrade policy is divided into 2 catagories. MINOR updates are
those which fix bugs and add minor improvements, while MAJOR updates are
ones which add important new features or require a new manual (see section
8.3, What you're buying.) An example of a minor update might be from
version 1.0 to version 1.1 or 1.2. An example of a major update might
be from version 1.1 or 1.2 to version 2.0.
Any purchase of LightSpeed (including edition changes) entitles you to
6-month membership in our minor updates plan. You will receive an update
via mail as long as you are a member of this plan. This plan covers
minor updates for free, which will be sent to you automatically when
they are available. We will NOT necissarily send all or any updates.
To conserve charges and time, we will only send updates when enough
changes have occured in LightSpeed that we consider it necissary. We
will also send you automatic notification of major updates as they become
available. After the 6-months expire, you may purchase an additional year
of automatic MINOR upgrades for $15. Note: We will not send notification
when your plan expires.
Major upgrades include a $15 charge. Major upgrades may include
additional charges if the price of your version of LightSpeed increases.
For example, if you have purchased the Dual Line version for $100, and the
price increases to $110 between version 1.2 and version 2.0, then
purchasing a major upgrade for your version 1.2 will cost $15 for the
upgrade plus the difference of $10 in the price, for a total cost of $25
for the upgrade.
Upgrading between Editions will cost the difference plus $5. For
example, if you purchase the Single Line Edition for $40 and your BBS
grows so that you need the Dual Line Edition for $100, you can buy it
for $65.
In addition, there is a third kind of update which is normally not
available. This is called the RELEASE update. This is signified by the
word Release followed by a number after the program's version number, or
by a third decimal point in the version number, if it is mentioned at
all. Release updates are very minor and are the workings between one
minor update and another. You shouldn't worry about release updates,
they are very tiny improvements in the program which will be distributed
as part of the next minor or major update.
[8.2 - Contacting us...]
For information...
For the most current prices...
For technical support...
Or to place an order...
By Internet EMail:
Send e-mail to the lead-programmer and sales manager for LightSpeed at:
WileyBlack@msn.com
By BBS:
Call (505) 865-0116 or (505) 865-7789 by modem.
Login as GUEST with the password LS for quickest access..
[Remember, we cannot accept credit cards, so you must send a check or
money order by USMail anyway before we can ship your program.]
By USMail:
See REGISTER.FRM for information.
We can accept checks addressed to "Carol Black", money orders are also
fine, however we regret we cannot accept credit cards at this time.
[8.3 - What you're buying...]
Any purchase of LightSpeed includes LightSpeed BBS Host itself, as well
as companion programs to maintain the system. It also includes LsChat,
LsVote, LsWall, LsVerify, the Planets Interface, and LsVerify companion
doors free of charge (A $120 value!) See the Introduction of this document
for details.
Any LightSpeed purchase includes the LightSpeed BBS Host, doors, and
membership in our upgrades plan (see section 8.1, Upgrades.) It currently
does NOT include a printed manual. We are working on supplying manuals
in the future, but have limited resources for it.
Technical support will be offered via the modem numbers given above,
at our descresion. By-request we will offer voice phone support. This
technical support is not a warranty, and is not garunteed, however, we
will try the best we can to keep your system running.
[Appendix A - Known bugs...]
Known bugs in the LightSpeed system to-date:
- 2400 Baud: Many 2400 baud modems have problems with LightSpeed.
There is no known solution for this at this time, but we're working
on it. You might try messing with your modem's CTS/RTS settings. If
you have any luck, tell us about it.
- System Events: Only the "Call nearest time" system event works.
LightSpeed ignores the setting for this in LSConfig at this time.
- LaserLink: LightSpeed supports the LaserLink system already, however
this system will not function correctly. For an explanation of
LaserLink, see future plans, above.
- Slightly slow menus: Unless you are going to be running multiple
nodes or on a slow computer (less than 33mhz) this shouldn't even be
noticable.
- Teleconference is a bit slow. We're working on re-writting it without
using any disk-access at this time, which will significantly improve
the speed and power.
- Incomplete documentation: These documentation which you are currently
reading only include a quick explanation of the system, later they will
be lengthened and more information added.
[Appendix B - Why?]
Q. Why did we create LightSpeed systems?
A. We want to open new doors to expand on BBS Systems. We believe much
can be done to improve BBS Systems, and are going to try our best to
invent some of them. However, doing this takes a lot of resources,
which we don't have. That's why we need user's support to fund our
work, and give us a chance to build on and improve LightSpeed.
[Credits]
Wiley Black is currently a student at Los Lunas High School, age 15. He
has been programming in C and recently C++ for 5 years now, and been
involved in multiple projects. He is also an employee and minor
owner of RidgeLine Engineering. After nearly 13 months on the project,
he is the lead programmer for LightSpeed BBS Software, and has writen most
of the code alone. Wiley also handles the sales and pricing of the system.
Wiley is known as Terror throughout New Mexico BBSes and his own system.
Joel Yancey is a student at Valley High School located in Corrales, NM.
He is a pascal programmer currently learning C and C++ techniques. His
knowledge of modems, BBS systems, and internet operations has greatly
benefited the project. Joel is known as Python, Kurt Kobain, and R0k on
New Mexico BBSes and has experience as a sysop himself.
Steven Fisher is a student at La Cueva High School, and is an experienced
C and C++ programmer. He has excellent knowledge of many aspects of BBS
systems, internet systems, and non-DOS-systems which has helped the system.
Steve is known as Lithium and Eagle on New Mexico systems.
Special thanks to...
Malek Annabi (King Burgundy)...For bein' an inspiration for all who know U
Joe Bajin & Paul Stephans...For bein' a bum who wants my software, and
for coming to my parties and haf'n a blast.
Dave Doster (Cybersled)...For bein' a friend for no reason...
Rebecca Haskins...For keeping my skewl-life interesting.. farewell...
Dan Lopez (Rev.Pslock Macro)...For bein' a pal when no-one else would...
...don't enjoy my ex too much man!
Paul Kennerly (Depeche Mode)...For bein' a cosysop bum... but helpful!
Matt Landis (Weird)...For countless deathmatches ended in insanity...
Michele Mauro...For being coo' and putting up with my internet mail...
Becky Malerie (sp?)...For bein' a friend with some style...
Jason Owsley...For having all kindsa wierd ideas and daring to share them..
Mike Williams (Little M)...For daring to enjoy my GTs...
ID Software...For giving me a hobby
Westwood Studios...For creating some massively cool entertainment
And finally...
Olivia Villescas...For giving me someone to love ;} <kisses>
And an old friend who went by the handle NataS...Off in CA somewhere...
Thanks for getting me off on the right foot, bro. Your idea to have GTs
worked! Enjoy yourself, dude!
[Legal Notice]
The following applies in full to LsChat, LsVote, LsVerify, LsPlanets,
and LsWall, as well as all companion programs and documentation comprised
of LightSpeed BBS Host software.
THIS PRODUCT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
THE ENTIRE RISK AS TO THE RESULTS AND PERFORMANCE OF THE PROGRAM
IS ASSUMED BY YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU (AND
NOT RIDGELINE ENGINEERING, ITS DEALERS, OR EMPLOYEES) ASSUME THE
ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
FURTHER, RIDGELINE ENGINEERING DOES NOT WARRANT, GUARANTEE, OR MAKE
REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE
OF THIS PROGRAM IN TERMS OF CORRECTNESS, ACCURACY, RELIABILITY,
CURRENTNESS, OR OTHERWISE; AND YOU RELY ON THE PROGRAM AND IT'S
RESULTS SOLELY AT YOUR OWN RISK. RIDGELINE ENGINEERING CANNOT
ACCEPT RESPONSIBILITY FOR SYSTEM DAMAGE, LOSS OF PROFIT, OR ANY
OTHER SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGE RESULTING FROM
THE USE OR INABILITY TO USE THIS PRODUCT.
LightSpeed BBS Host system's EXE files, and DOC files may not be modified
in any way. To do so is a voilation of law. Distribution of modified
files is further voilation of law. This includes all editions and versions
of LightSpeed and its companions.
RidgeLine Eng., DOES warrant to the original licensee of
a REGISTERED product that the program disk(s) on which the
program is recorded be free from defects in materials and
workmanship under normal use and service for a period of ninety
(90) days from the date of delivery as evidenced by a copy of
your receipt. RidgeLine Eng.'s entire liability and your
exclusive remedy shall be replacement of the disk not meeting
RidgeLine Eng.'s limited warranty.
We reserve the right to refuse service, sales, or information to
anyone we choose, for any reason.
COPYRIGHT
LightSpeed BBS Host software and this document are Copyright
(C)1995 RidgeLine Eng. All rights reserved.
Any specific hardware/software names used in this document are
trademarks of specific manufacturers.
Regardless of the method of marketing, LightSpeed BBS Host
software is not in the public domain. It is copyrighted by
RidgeLine Engineering. All rights are reserved. Copying,
duplicating, selling or otherwise distributing this product
is a violation of the law. However, we grant you the right,
in fact encourage you to make and distribute as many copies
of the shareware Trial edition as you wish, using any
acceptable medium of exchange, with the following provisions:
You may distribute this Trial Edition as often as you like,
to any sources you choose. Do not distribute LightSpeed without
all of its files, addendum files, documentation and this notice
in their original form. Please obtain our written permission prior
to distribution with any "Bundled" software packages. (I am willing
to allow bundled sales in most cases, just contact me.) Do not alter the
program or documentation in any manner. Please do not accept payment for
the program to exceed $10, unless it is being distributed on a "Shareware
Cd-Rom". LightSpeed Trial Edition is licensed for individual personal
use and evaluation for an unlimited time. Use and evaluation by
businesses, corporations or individuals in a commercial venture is
limited to 90 days, after which time a REGISTERED edition of LightSpeed
must be purchased or the use of LightSpeed Trial Edition must be
discontinued.
Distribution of any REGISTERED edition of LightSpeed BBS Host is in
violation of license agreements and international copyright laws!
SOURCE CODE
This product uses the SPAWNO routines by Ralf Brown for extremely fast
and effecient shelling to DOS for door and event handling. These are
extremely good routines and I encourage all programmers to make use of
them! LightSpeed also makes use of the MCOMM5 serial library, which is
the best we've ever seen. Finally, LightSpeed makes use of the LsTree
B-Tree Indexing module written by our team.
The actual source code to LightSpeed is not, and will not, be available
under any circumstances. We are working on distributing a door-kit free
or for under $25 with LightSpeed named LsDoor. This door-kit provides
all the foundation that programmers will need to create their own doors
and utilities to work with LightSpeed (or any BBS Software. The door-kit
automatically detects LightSpeed and enables the LightSpeed door extensions
such as paging-via-door.)
While the actual door kit will sell for $25 or under, there will be an
additional $25 cost in purchasing the MCOMM5 serial library (which cannot
be purchased through us at this time, but we will give you the place to
call and the form to send.)
Examples of the power of the LsDoor library include all the companion
doors included with LightSpeed, such as LsChat and LsVote. Try paging a
user from chat, or paging a user IN chat and you'll get the idea.
LightSpeed has been in the works since Summer of 1994. It has been
rewritten about 4 to 5 times in that time (our first BBS designed totally
failed and we had to start over around fall of 1994.) The LsTree Indexing
module was partially completed in summer of '94 and revised and finished
in spring of '95.